package top.wutunan.proxy;

import com.gun.dynamicproxy.Person;
import top.wutunan.util.CInvocationHandler;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;


/**
 * @author liyupeng
 * @date 2023/7/13&11:13
 * @packageName com.gun.dynamicproxy
 */
public class Handler implements CInvocationHandler {

    // 目标对象
    // 声明 被代理的对象， 接口类型。
    Object target;


    public Handler(Object target) {
        this.target = target;
    }

    @Override
    public Object invoke(Object proxy, Method md, Object... args) {
        System.out.println("对原方法进行了前置增强1");  // 代理逻辑
        //原方法执行
        Object invoke = null;
        try {
            invoke = md.invoke(target, args);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        System.out.println("对原方法进行了后置增强1");  // 代理逻辑
        return invoke;
    }
//    @Override
//    public Object invoke(Object proxy, Method method, Object[] args)  {
//        System.out.println("对原方法进行了前置增强1");  // 代理逻辑
//        //原方法执行
//        Object invoke = method.invoke(person, args);
//
//        System.out.println("对原方法进行了后置增强1");  // 代理逻辑
//        return invoke;
//    }
}
